home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2001 January / PC-WELT 01-2001.ISO / software / linux / netscap6 / xpi / browser.xpi / bin / run-mozilla.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  2000-11-08  |  6.9 KB  |  362 lines

  1. #!/bin/sh
  2. #
  3. # The contents of this file are subject to the Netscape Public License
  4. # Version 1.0 (the "NPL"); you may not use this file except in
  5. # compliance with the NPL.  You may obtain a copy of the NPL at
  6. # http://www.mozilla.org/NPL/
  7. #
  8. # Software distributed under the NPL is distributed on an "AS IS" basis,
  9. # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10. # for the specific language governing rights and limitations under the
  11. # NPL.
  12. #
  13. # The Initial Developer of this code under the NPL is Netscape
  14. # Communications Corporation.  Portions created by Netscape are
  15. # Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16. # Reserved.
  17. #
  18. #
  19. ## 
  20. ## Usage:
  21. ##
  22. ## $ run-mozilla.sh [options] [program] [program arguments]
  23. ##
  24. ## This script is meant to run a mozilla program from the mozilla
  25. ## source tree.  This is mostly useful to folks hacking on mozilla.
  26. ##
  27. ## A mozilla program is currently either viewer or apprunner.  The
  28. ## default is viewer.
  29. ##
  30. ## The script will setup all the environment voodoo needed to make
  31. ## mozilla work.
  32. #
  33. ##
  34. ## Standard shell script disclaimer blurb thing:
  35. ##
  36. ## This script is a hack.  It's brute force.  It's horrible.  
  37. ## It doesn't use Artificial Intelligence.  It doesn't use Virtual Reality.
  38. ## It's not perl.  It's not python.  It probably won't work unchanged on
  39. ## the "other" thousands of unices.  But it worksforme.  --ramiro
  40. ##
  41. ## If you have an improvement, patch, idea, whatever, on how to make this
  42. ## script better, post it here:
  43. ##
  44. ## news://news.mozilla.org/netscape.public.mozilla.patches
  45. ## news://news.mozilla.org/netscape.public.mozilla.unix
  46. ## 
  47. #
  48. ##
  49. ## Potential improvements:
  50. ##
  51. ## + Run from anywhere in the tree.
  52. ## + Run ldd on the program and report missing dlls
  53. ## + Deal with NSPR in the tree
  54. ## + All the other unices
  55. ##
  56. #
  57. cmdname=`basename $0`
  58. MOZ_DIST_BIN=`dirname $0`
  59. MOZ_APPRUNNER_NAME="./apprunner"
  60. MOZ_VIEWER_NAME="./viewer"
  61.  
  62. MOZ_PROGRAM=""
  63. #
  64. ##
  65. ## Functions
  66. ##
  67. ##########################################################################
  68. moz_usage()
  69. {
  70.     cat << EOF
  71.  
  72. Usage:  ${cmdname} [options] [program]
  73.  
  74.   options:
  75.  
  76.     -g                   Run in debugger.
  77.     --debug
  78.  
  79.     -d debugger          Debugger to use.
  80.     --debugger debugger
  81.  
  82.   Examples:
  83.  
  84.   Run the viewer
  85.  
  86.     ${cmdname} viewer
  87.  
  88.   Run the apprunner
  89.  
  90.     ${cmdname} apprunner
  91.  
  92.   Debug the viewer in a debbuger
  93.  
  94.     ${cmdname} -g viewer
  95.  
  96.   Debug the apprunner in gdb
  97.  
  98.     ${cmdname} -g viewer -d gdb
  99.  
  100. EOF
  101.     return 0
  102. }
  103. ##########################################################################
  104. moz_bail()
  105. {
  106.     message=$1
  107.     echo
  108.     echo "$cmdname: $message"
  109.     echo
  110.     exit 1
  111. }
  112. ##########################################################################
  113. moz_test_binary()
  114. {
  115.     binary=$1
  116.     if [ -f "$binary" ]
  117.     then
  118.         if [ -x "$binary" ]
  119.         then
  120.             return 1
  121.         fi
  122.     fi
  123.     return 0
  124. }
  125. ##########################################################################
  126. moz_get_debugger()
  127. {
  128.     debuggers="ddd gdb dbx"
  129.     debugger="notfound"
  130.     done="no"
  131.     for d in $debuggers
  132.     do
  133.         dpath=`which ${d}`
  134.         if [ -x "$dpath" ]
  135.         then
  136.             debugger=$dpath
  137.             break
  138.         fi
  139.     done
  140.     echo $debugger
  141.     return 0
  142. }
  143. ##########################################################################
  144. moz_run_program()
  145. {
  146.     prog=$MOZ_PROGRAM
  147.     ##
  148.     ## Make sure the program is executable
  149.     ##
  150.     if [ ! -x "$prog" ]
  151.     then
  152.         moz_bail "Cannot execute $prog."
  153.     fi
  154.     ##
  155.     ## Use md5sum to crc a core file.  If md5sum is not found on the system,
  156.     ## then dont debug core files.
  157.     ##
  158.     crc_prog=`which md5sum`
  159.     if [ -x "$crc_prog" ]
  160.     then
  161.         DEBUG_CORE_FILES=1
  162.     fi
  163.     if [ "$DEBUG_CORE_FILES" ]
  164.     then
  165.         crc_old=
  166.         if [ -f core ]
  167.         then
  168.             crc_old=`$crc_prog core | awk '{print $1;}' `
  169.         fi
  170.     fi
  171.     ##
  172.     ## Run the program
  173.     ##
  174.     $prog ${1+"$@"}
  175.     if [ "$DEBUG_CORE_FILES" ]
  176.     then
  177.         if [ -f core ]
  178.         then
  179.             crc_new=`$crc_prog core | awk '{print $1;}' `
  180.         fi
  181.     fi
  182.     if [ "$crc_old" != "$crc_new" ]
  183.     then
  184.         printf "\n\nOh no!  %s just dumped a core file.\n\n" $prog
  185.         printf "Do you want to debug this ? "
  186.         printf "You need a lot of memory for this, so watch out ? [y/n] "
  187.         read ans
  188.         if [ "$ans" = "y" ]
  189.         then
  190.             debugger=`moz_get_debugger`
  191.             if [ -x "$debugger" ]
  192.             then
  193.                 echo "$debugger $prog core"
  194.  
  195.                 # See http://www.mozilla.org/unix/debugging-faq.html
  196.                 # For why LD_BIND_NOW is needed
  197.                 LD_BIND_NOW=1; export LD_BIND_NOW
  198.  
  199.                 $debugger $prog core
  200.             else
  201.                 echo "Could not find a debugger on your system."
  202.             fi
  203.         fi
  204.     fi
  205. }
  206. ##########################################################################
  207. moz_debug_program()
  208. {
  209.     prog=$MOZ_PROGRAM
  210.     ##
  211.     ## Make sure the program is executable
  212.     ##
  213.     if [ ! -x "$prog" ]
  214.     then
  215.         moz_bail "Cannot execute $prog."
  216.     fi
  217.     if [ -n "$moz_debugger" ]
  218.     then
  219.         debugger=`which $moz_debugger`
  220.     else
  221.         debugger=`moz_get_debugger`
  222.     fi
  223.     if [ -x "$debugger" ]
  224.     then
  225.         echo "$debugger $prog ${1+"$@"}"
  226.         $debugger $prog ${1+"$@"}
  227.     else
  228.         echo "Could not find a debugger on your system."
  229.     fi
  230. }
  231. ##########################################################################
  232. ##
  233. ## Command line arg defaults
  234. ##
  235. moz_debug=0
  236. moz_debugger=""
  237. #
  238. ##
  239. ## Parse the command line
  240. ##
  241. while [ $# -gt 0 ]
  242. do
  243.   case $1 in
  244.     -h | --help)
  245.       moz_usage
  246.       exit 0
  247.       ;;
  248.     -g | --debug)
  249.       moz_debug=1
  250.       shift
  251.       ;;
  252.     -d | --debugger)
  253.       moz_debugger=$2;
  254.       shift 2
  255.       ;;
  256.     *)
  257.       break;
  258.       ;;
  259.   esac
  260. done
  261. #
  262. ##
  263. ## Program name given in $1
  264. ##
  265. if [ $# -gt 0 ]
  266. then
  267.     MOZ_PROGRAM=$1
  268.     shift
  269. fi
  270. ##
  271. ## Program not given, try to guess a default
  272. ##
  273. if [ -z "$MOZ_PROGRAM" ]
  274. then
  275.     ##
  276.     ## Try viewer
  277.     ## 
  278.     moz_test_binary $MOZ_VIEWER_NAME
  279.     if [ $? -eq 1 ]
  280.     then
  281.         MOZ_PROGRAM=$MOZ_VIEWER_NAME
  282.     ##
  283.     ## Try apprunner
  284.     ## 
  285.     else
  286.         moz_test_binary $MOZ_APPRUNNER_NAME
  287.         if [ $? -eq 1 ]
  288.         then
  289.             MOZ_PROGRAM=$MOZ_APPRUNNER_NAME
  290.         fi
  291.     fi
  292. fi
  293. #
  294. #
  295. ##
  296. ## Make sure the program is executable
  297. ##
  298. if [ ! -x "$MOZ_PROGRAM" ]
  299. then
  300.     moz_bail "Cannot execute $MOZ_PROGRAM."
  301. fi
  302. #
  303. ##
  304. ## Set MOZILLA_FIVE_HOME
  305. ##
  306. MOZILLA_FIVE_HOME=$MOZ_DIST_BIN
  307. COOL_HOME=$MOZ_DIST_BIN/Cool
  308. #
  309. ##
  310. ## Set LD_LIBRARY_PATH
  311. ##
  312. if [ -n "$LD_LIBRARY_PATH" ]
  313. then
  314.     LD_LIBRARY_PATH=${COOL_HOME}:${MOZ_DIST_BIN}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
  315. else
  316.     LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${COOL_HOME}
  317. fi
  318. #
  319. ##
  320. ## Set LIBPATH - for AIX
  321. ##
  322. if [ -n "$LIBPATH" ]
  323. then
  324.     LIBPATH=${COOL_HOME}:${MOZ_DIST_BIN}${LIBPATH+":$LIBPATH"}
  325. else
  326.     LIBPATH=${MOZ_DIST_BIN}:${COOL_HOME}
  327. fi
  328. #
  329. ##
  330. ## Set SHLIB_PATH - for HP-UX
  331. ##
  332. if [ -n "$SHLIB_PATH" ]
  333. then
  334.     SHLIB_PATH=${COOL_HOME}:${MOZ_DIST_BIN}${SHLIB_PATH+":$SHLIB_PATH"}
  335. else
  336.     SHLIB_PATH=${MOZ_DIST_BIN}:${COOL_HOME}
  337. fi
  338. #
  339. ##
  340. ## Set XPCS_HOME
  341. ##
  342. XPCS_HOME=${COOL_HOME}
  343. #
  344. echo "MOZILLA_FIVE_HOME=$MOZILLA_FIVE_HOME"
  345. echo "  LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
  346. echo "          LIBPATH=$LIBPATH"
  347. echo "       SHLIB_PATH=$SHLIB_PATH"
  348. echo "      XPCS_HOME=$XPCS_HOME"
  349. echo "      MOZ_PROGRAM=$MOZ_PROGRAM"
  350. echo "      MOZ_TOOLKIT=$MOZ_TOOLKIT"
  351. echo "        moz_debug=$moz_debug"
  352. echo "     moz_debugger=$moz_debugger"
  353. #
  354. export MOZILLA_FIVE_HOME LD_LIBRARY_PATH XPCS_HOME LIBPATH SHLIB_PATH
  355. #
  356. if [ "$moz_debug" = "1" ]
  357. then
  358.     moz_debug_program ${1+"$@"}
  359. else
  360.     moz_run_program ${1+"$@"}
  361. fi
  362.